﻿using System;
using System.ServiceModel;
using System.Collections.Generic;
using Sinacor.Infra.Common.Exceptions;
using Sinacor.Infra.Service.ExceptionHandling;
using Sinacor.Infra.Service.Security.Services;
using Sinacor.Infra.Common;
using Sinacor.Infra.Common.Exceptions.FaultContracts;

namespace Sinacor.Servico.Bovespa.Corretagem.Service.ServiceContract {

	/// <summary>
	/// Contrato de serviços de manutenção em entidades de tipos de aplicações de
	/// corretagem
	/// </summary>
	 [ExceptionShielding]
	 [ServiceContract(Namespace = "http://www.bovespa.com.br/Sinacor.Servico.Bovespa.Corretagem.Service.ServiceContract", SessionMode = SessionMode.Allowed, Name="ITipoAplicacaoCorretagem")]
	 public interface ITipoAplicacaoCorretagem {

		#region Métodos
         
        [FaultContract(typeof(BusinessFault))]
		[FaultContract(typeof(ValidationFault))]
		[FaultContract(typeof(GeneralFault))]
		[FaultContract(typeof(InvalidSessionFault))]
		[FaultContract(typeof(LicensingFault))]
		[FaultContract(typeof(AccessIsDeniedFault))]
        [OperationLog]
        [OperationContract(IsTerminating = false, IsInitiating = true, IsOneWay = false, Action = "AlterarTipoAplicacaoCorretagem")]
        void AlterarTipoAplicacaoCorretagem(DataContract.Request.TipoAplicacaoCorretagemRequest parameter);

        [FaultContract(typeof(BusinessFault))]
		[FaultContract(typeof(ValidationFault))]
		[FaultContract(typeof(GeneralFault))]
		[FaultContract(typeof(InvalidSessionFault))]
		[FaultContract(typeof(LicensingFault))]
		[FaultContract(typeof(AccessIsDeniedFault))]
        [TransactionRequired]
        [OperationLog]
        [OperationContract(IsTerminating = false, IsInitiating = true, IsOneWay = false, Action = "AlterarTiposAplicacoesCorretagem")]		
        void AlterarTiposAplicacoesCorretagem(List<DataContract.Request.TipoAplicacaoCorretagemRequest> parameterList);

        [FaultContract(typeof(BusinessFault))]
		[FaultContract(typeof(ValidationFault))]
		[FaultContract(typeof(GeneralFault))]
		[FaultContract(typeof(InvalidSessionFault))]
		[FaultContract(typeof(LicensingFault))]
		[FaultContract(typeof(AccessIsDeniedFault))]
        [OperationLog]
        [OperationContract(IsTerminating = false, IsInitiating = true, IsOneWay = false, Action = "ConsultarTiposAplicacoesCorretagem")]
		List<DataContract.Response.TipoAplicacaoCorretagemResponse> ConsultarTiposAplicacoesCorretagem(DataContract.Request.FiltroTipoAplicacaoCorretagemRequest parameter);

        [FaultContract(typeof(BusinessFault))]
		[FaultContract(typeof(ValidationFault))]
		[FaultContract(typeof(GeneralFault))]
		[FaultContract(typeof(InvalidSessionFault))]
		[FaultContract(typeof(LicensingFault))]
		[FaultContract(typeof(AccessIsDeniedFault))]
        [OperationLog]
        [OperationContract(IsTerminating = false, IsInitiating = true, IsOneWay = false, Action = "ExcluirTipoAplicacaoCorretagem")]
		void ExcluirTipoAplicacaoCorretagem(DataContract.Request.FiltroTipoAplicacaoCorretagemChaveRequest parameter);

        [FaultContract(typeof(BusinessFault))]
		[FaultContract(typeof(ValidationFault))]
		[FaultContract(typeof(GeneralFault))]
		[FaultContract(typeof(InvalidSessionFault))]
		[FaultContract(typeof(LicensingFault))]
		[FaultContract(typeof(AccessIsDeniedFault))]
        [TransactionRequired]
        [OperationLog]
        [OperationContract(IsTerminating = false, IsInitiating = true, IsOneWay = false, Action = "ExcluirTiposAplicacoesCorretagem")]
		void ExcluirTiposAplicacoesCorretagem(List<DataContract.Request.FiltroTipoAplicacaoCorretagemChaveRequest> parameterList);

        [FaultContract(typeof(BusinessFault))]
		[FaultContract(typeof(ValidationFault))]
		[FaultContract(typeof(GeneralFault))]
		[FaultContract(typeof(InvalidSessionFault))]
		[FaultContract(typeof(LicensingFault))]
		[FaultContract(typeof(AccessIsDeniedFault))]
        [TransactionRequired]
        [OperationLog]
        [OperationContract(IsTerminating = false, IsInitiating = true, IsOneWay = false, Action = "ExecutarTransacoes")]
		void ExecutarTransacoes(List<DataContract.Request.TipoAplicacaoCorretagemRequest> inclusoes, List<DataContract.Request.TipoAplicacaoCorretagemRequest> alteracoes, List<DataContract.Request.FiltroTipoAplicacaoCorretagemChaveRequest> exclusoes);

        [FaultContract(typeof(BusinessFault))]
		[FaultContract(typeof(ValidationFault))]
		[FaultContract(typeof(GeneralFault))]
		[FaultContract(typeof(InvalidSessionFault))]
		[FaultContract(typeof(LicensingFault))]
		[FaultContract(typeof(AccessIsDeniedFault))]
        [OperationLog]
        [OperationContract(IsTerminating = false, IsInitiating = true, IsOneWay = false, Action = "IncluirTipoAplicacaoCorretagem")]
		void IncluirTipoAplicacaoCorretagem(DataContract.Request.TipoAplicacaoCorretagemRequest parameter);

        [FaultContract(typeof(BusinessFault))]
		[FaultContract(typeof(ValidationFault))]
		[FaultContract(typeof(GeneralFault))]
		[FaultContract(typeof(InvalidSessionFault))]
		[FaultContract(typeof(LicensingFault))]
		[FaultContract(typeof(AccessIsDeniedFault))]
        [TransactionRequired]
        [OperationLog]
        [OperationContract(IsTerminating = false, IsInitiating = true, IsOneWay = false, Action = "IncluirTiposAplicacoesCorretagem")]
        void IncluirTiposAplicacoesCorretagem(List<DataContract.Request.TipoAplicacaoCorretagemRequest> parameterList);

        [FaultContract(typeof(BusinessFault))]
		[FaultContract(typeof(ValidationFault))]
		[FaultContract(typeof(GeneralFault))]
		[FaultContract(typeof(InvalidSessionFault))]
		[FaultContract(typeof(LicensingFault))]
		[FaultContract(typeof(AccessIsDeniedFault))]
        [OperationLog]
        [OperationContract(IsTerminating = false, IsInitiating = true, IsOneWay = false, Action = "ObterTipoAplicacaoCorretagem")]
        DataContract.Response.TipoAplicacaoCorretagemResponse ObterTipoAplicacaoCorretagem(DataContract.Request.FiltroTipoAplicacaoCorretagemChaveRequest parameter); 
		#endregion Métodos

	}

}